/**
 * URL工具函数
 * 处理应用的基础路径和路径拼接
 */

// 应用的基础路径配置，支持环境变量
const BASE_PATH = (import.meta as any).env?.VITE_APP_BASE_PATH || '/esp32-launchpad';

/**
 * 获取应用的完整路径
 * @param path 相对路径，如 '/login', '/dashboard' 等
 * @returns 完整的应用路径，如 '/esp32-launchpad/login'
 */
export const getAppPath = (path: string = ''): string => {
  // 确保路径以 / 开头
  const normalizedPath = path.startsWith('/') ? path : `/${path}`;
  return `${BASE_PATH}${normalizedPath}`;
};

/**
 * 获取登录页面路径
 * @returns 登录页面的完整路径
 */
export const getLoginPath = (): string => {
  return getAppPath('/login');
};

/**
 * 获取仪表板路径
 * @returns 仪表板页面的完整路径
 */
export const getDashboardPath = (): string => {
  return getAppPath('/dashboard');
};

/**
 * 获取首页路径
 * @returns 首页的完整路径
 */
export const getHomePath = (): string => {
  return getAppPath('/');
};

/**
 * 跳转到指定路径
 * @param path 相对路径
 */
export const navigateToPath = (path: string): void => {
  const fullPath = getAppPath(path);
  window.location.href = fullPath;
};

/**
 * 跳转到登录页面
 */
export const navigateToLogin = (): void => {
  navigateToPath('/login');
};

/**
 * 跳转到仪表板
 */
export const navigateToDashboard = (): void => {
  navigateToPath('/dashboard');
};

/**
 * 跳转到首页
 */
export const navigateToHome = (): void => {
  navigateToPath('/');
};

/**
 * 检查当前路径是否为登录页面
 * @returns 是否为登录页面
 */
export const isLoginPage = (): boolean => {
  return window.location.pathname === getLoginPath();
};

/**
 * 检查当前路径是否为应用内的页面
 * @returns 是否为应用内的页面
 */
export const isAppPage = (): boolean => {
  return window.location.pathname.startsWith(BASE_PATH);
};
